diff --git a/BLAS/SRC/CMakeLists.txt b/BLAS/SRC/CMakeLists.txt
--- a/BLAS/SRC/CMakeLists.txt
+++ b/BLAS/SRC/CMakeLists.txt
@@ -113,29 +113,22 @@
 
 set(ZBLAS3 zgemm.f zsymm.f zsyrk.f zsyr2k.f ztrmm.f ztrsm.f 
 	zhemm.f zherk.f zher2k.f)
-# default build all of it
-set(ALLOBJ ${SBLAS1} ${SBLAS2} ${SBLAS3} ${DBLAS1} ${DBLAS2} ${DBLAS3}	
-	${CBLAS1} ${CBLAS2} ${CBLAS3} ${ZBLAS1} 
-	${ZBLAS2} ${ZBLAS3} ${ALLBLAS})
-
-if(BLAS_SINGLE)
-  set(ALLOBJ ${SBLAS1} ${ALLBLAS} 
-	${SBLAS2} ${SBLAS3})
+
+set(ALLOBJ)
+if(BUILD_SINGLE)
+  list(APPEND ALLOBJ ${SBLAS1} ${ALLBLAS} ${SBLAS2} ${SBLAS3})
 endif()
-if(BLAS_DOUBLE)
-  set(ALLOBJ ${DBLAS1} ${ALLBLAS} 
-	${DBLAS2} ${DBLAS3})
+if(BUILD_DOUBLE)
+  list(APPEND ALLOBJ ${DBLAS1} ${ALLBLAS} ${DBLAS2} ${DBLAS3})
 endif()
-if(BLAS_COMPLEX)
-  set(ALLOBJ  ${BLASLIB} ${CBLAS1} ${CB1AUX} 
-	${ALLBLAS} ${CBLAS2})
+if(BUILD_COMPLEX)
+  list(APPEND ALLOBJ ${BLASLIB} ${CBLAS1} ${CB1AUX} ${ALLBLAS} ${CBLAS2} ${CBLAS3})
 endif()
-if(BLAS_COMPLEX16)
-  set(ALLOBJ  ${BLASLIB} ${ZBLAS1} ${ZB1AUX} 
-	${ALLBLAS} ${ZBLAS2} ${ZBLAS3})
+if(BUILD_COMPLEX16)
+  list(APPEND ALLOBJ ${BLASLIB} ${ZBLAS1} ${ZB1AUX} ${ALLBLAS} ${ZBLAS2} ${ZBLAS3})
 endif()
-  
-  
+list(REMOVE_DUPLICATES ALLOBJ)
+
 add_library(blas ${ALLOBJ})
 set_target_properties(
   blas PROPERTIES
diff --git a/CBLAS/CMakeLists.txt b/CBLAS/CMakeLists.txt
--- a/CBLAS/CMakeLists.txt
+++ b/CBLAS/CMakeLists.txt
@@ -65,9 +65,9 @@
   list(GET ALL_TARGETS 0 _cblas_config_build_guard_target)
 endif()
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-version.cmake.in
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-version.cmake.in
   ${LAPACK_BINARY_DIR}/cblas-config-version.cmake @ONLY)
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMAKE/cblas-config-build.cmake.in
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cblas-config-build.cmake.in
   ${LAPACK_BINARY_DIR}/cblas-config.cmake @ONLY)
 
 
diff --git a/CBLAS/src/CMakeLists.txt b/CBLAS/src/CMakeLists.txt
--- a/CBLAS/src/CMakeLists.txt
+++ b/CBLAS/src/CMakeLists.txt
@@ -28,34 +28,26 @@
          cblas_ddot.c  cblas_dsdot.c cblas_dnrm2.c cblas_dasum.c 
          cblas_idamax.c   ddotsub.f   dsdotsub.f       dnrm2sub.f
          dasumsub.f idamaxsub.f)
-
 #
 # All object files for single complex precision
 #
 set (CLEV1 cblas_cswap.c cblas_cscal.c cblas_csscal.c cblas_ccopy.c
          cblas_caxpy.c cblas_cdotu_sub.c cblas_cdotc_sub.c
          cblas_icamax.c cdotcsub.f cdotusub.f icamaxsub.f)
-
 #
 # All object files for double complex precision
 #
 set (ZLEV1 cblas_zswap.c cblas_zscal.c cblas_zdscal.c cblas_zcopy.c
-         cblas_zaxpy.c cblas_zdotu_sub.c cblas_zdotc_sub.c cblas_dznrm2.c
-         cblas_dzasum.c cblas_izamax.c zdotcsub.f zdotusub.f     
-         dzasumsub.f  dznrm2sub.f  izamaxsub.f)
-       
-
+         cblas_zaxpy.c cblas_zdotu_sub.c cblas_zdotc_sub.c
+         cblas_izamax.c zdotcsub.f zdotusub.f izamaxsub.f)
 #
 # Common files for single complex precision
 #
 set (SCLEV1 cblas_scasum.c scasumsub.f cblas_scnrm2.c scnrm2sub.f)
-
-
 #
-# All object files
+# Common files for double complex precision
 #
-set (ALEV1 ${slev1} ${dlev1} ${clev1} ${zlev1} ${sclev1})
-
+set (DZLEV1 cblas_dzasum.c dzasumsub.f cblas_dznrm2.c dznrm2sub.f)
 
 #
 #
@@ -72,8 +64,6 @@
         cblas_sspr.c  cblas_sspr2.c cblas_ssymv.c cblas_ssyr.c  cblas_ssyr2.c
         cblas_stbmv.c cblas_stbsv.c cblas_stpmv.c cblas_stpsv.c  cblas_strmv.c
         cblas_strsv.c)
-
- 
 #
 # All object files for double real precision
 #
@@ -81,7 +71,6 @@
         cblas_dspr.c  cblas_dspr2.c cblas_dsymv.c cblas_dsyr.c  cblas_dsyr2.c
         cblas_dtbmv.c cblas_dtbsv.c cblas_dtpmv.c cblas_dtpsv.c  cblas_dtrmv.c
         cblas_dtrsv.c)
-
 #
 # All object files for single complex precision
 #
@@ -89,7 +78,6 @@
         cblas_ctrmv.c cblas_ctbmv.c cblas_ctpmv.c cblas_ctrsv.c cblas_ctbsv.c
         cblas_ctpsv.c cblas_cgeru.c cblas_cgerc.c cblas_cher.c  cblas_cher2.c
         cblas_chpr.c  cblas_chpr2.c)
-
 #
 # All object files for double complex precision
 #
@@ -97,10 +85,6 @@
         cblas_ztrmv.c cblas_ztbmv.c cblas_ztpmv.c cblas_ztrsv.c cblas_ztbsv.c
         cblas_ztpsv.c cblas_zgeru.c cblas_zgerc.c cblas_zher.c  cblas_zher2.c
         cblas_zhpr.c  cblas_zhpr2.c)
-#
-# All object files
-#
-set (AVEL2 ${slev2} ${dlev2} ${clev2} ${zlev2})
 
 #
 #
@@ -132,36 +116,21 @@
 set (ZLEV3 cblas_zgemm.c cblas_zsymm.c cblas_zhemm.c cblas_zherk.c
         cblas_zher2k.c cblas_ztrmm.c cblas_ztrsm.c  cblas_zsyrk.c
         cblas_zsyr2k.c)
-#
-# All object files
-#
-set (ALEV3 ${slev3} ${dlev3} ${clev3} ${zlev3})
-
-# default build all of it
-set(ALLOBJ ${SCLEV1} ${SLEV1} ${SLEV2} ${SLEV3} ${ERRHAND}
-           ${DLEV1} ${DLEV2} ${DLEV3}
-           ${CLEV1} ${CLEV2} ${CLEV3} 
-           ${ZLEV1} ${ZLEV2} ${ZLEV3}   )
-
-# Single real precision
-if(CBLAS_SINGLE)
- set(ALLOBJ ${SCLEV1} ${SLEV1} ${SLEV2} ${SLEV3} ${ERRHAND})
-endif(CBLAS_SINGLE)
-
-# Double real precision
-if(CBLAS_DOUBLE)
- set(ALLOBJ  ${DLEV1} ${DLEV2} ${DLEV3} ${ERRHAND})
-endif(CBLAS_DOUBLE)
-	
-# Single complex precision
-if (CBLAS_COMPLEX)
- set(ALLOBJ  ${CLEV1} ${SCLEV1} ${CLEV2} ${CLEV3} ${ERRHAND})
-endif(CBLAS_COMPLEX)
 
-# Double complex precision
-if (CBLAS_COMPLEX16) 
- set(ALLOBJ  ${ZLEV1} ${ZLEV2} ${ZLEV3} ${ERRHAND})
-endif(CBLAS_COMPLEX16)
+set(ALLOBJ)
+if(BUILD_SINGLE)
+  list(APPEND ALLOBJ ${SLEV1} ${SCLEV1} ${ERRHAND} ${SLEV2} ${SLEV3})
+endif()
+if(BUILD_DOUBLE)
+  list(APPEND ALLOBJ ${DLEV1} ${DZLEV1} ${ERRHAND} ${DLEV2} ${DLEV3})
+endif()
+if(BUILD_COMPLEX)
+  list(APPEND ALLOBJ ${CLEV1} ${SCLEV1} ${ERRHAND} ${CLEV2} ${CLEV3})
+endif()
+if(BUILD_COMPLEX16) 
+  list(APPEND ALLOBJ ${ZLEV1} ${DZLEV1} ${ERRHAND} ${ZLEV2} ${ZLEV3})
+endif()
+list(REMOVE_DUPLICATES ALLOBJ)
 
 add_library(cblas ${ALLOBJ})
 target_link_libraries(cblas PRIVATE ${BLAS_LIBRARIES})
diff --git a/CBLAS/src/Makefile b/CBLAS/src/Makefile
--- a/CBLAS/src/Makefile
+++ b/CBLAS/src/Makefile
@@ -52,9 +52,8 @@
 # All object files for double complex precision
 #
 zlev1 = cblas_zswap.o cblas_zscal.o cblas_zdscal.o cblas_zcopy.o \
-         cblas_zaxpy.o cblas_zdotu_sub.o cblas_zdotc_sub.o cblas_dznrm2.o \
-         cblas_dzasum.o cblas_izamax.o zdotcsub.o zdotusub.o      \
-         dzasumsub.o  dznrm2sub.o  izamaxsub.o 
+         cblas_zaxpy.o cblas_zdotu_sub.o cblas_zdotc_sub.o \
+         cblas_izamax.o zdotcsub.o zdotusub.o izamaxsub.o 
 
 #
 # Common files for single / complex precision
@@ -62,9 +61,14 @@
 sclev1 = cblas_scasum.o scasumsub.o cblas_scnrm2.o scnrm2sub.o
 
 #
+# Common files for double / complex precision
+#
+dzlev1 = cblas_dzasum.o dzasumsub.o cblas_dznrm2.o dznrm2sub.o
+
+#
 # All object files
 #
-alev1 = $(slev1) $(dlev1) $(clev1) $(zlev1) $(sclev1)
+alev1 = $(slev1) $(dlev1) $(clev1) $(zlev1) $(sclev1) $(dzlev1)
 
 
 #
@@ -77,8 +81,8 @@
 	$(RANLIB) $(CBLASLIB)
 
 # Double real precision
-dlib1: $(dlev1) 
-	$(ARCH) $(ARCHFLAGS) $(CBLASLIB) $(dlev1)
+dlib1: $(dlev1) $(dzlev1)
+	$(ARCH) $(ARCHFLAGS) $(CBLASLIB) $(dlev1) $(dzlev1)
 	$(RANLIB) $(CBLASLIB)
 
 # Single complex precision
@@ -87,8 +91,8 @@
 	$(RANLIB) $(CBLASLIB)
 
 # Double complex precision
-zlib1: $(zlev1)
-	$(ARCH) $(ARCHFLAGS) $(CBLASLIB) $(zlev1)
+zlib1: $(zlev1) $(dzlev1)
+	$(ARCH) $(ARCHFLAGS) $(CBLASLIB) $(zlev1) $(dzlev1)
 	$(RANLIB) $(CBLASLIB)
 
 # All precisions
diff --git a/CBLAS/testing/CMakeLists.txt b/CBLAS/testing/CMakeLists.txt
--- a/CBLAS/testing/CMakeLists.txt
+++ b/CBLAS/testing/CMakeLists.txt
@@ -28,8 +28,6 @@
 
 # Object files for single real precision
 SET( STESTL1O c_sblas1.c)
-
-SET( STESTL2O c_sblas2.c c_s2chke.c auxiliary.c c_xerbla.c)
 SET( STESTL2O c_sblas2.c c_s2chke.c auxiliary.c c_xerbla.c)
 SET( STESTL3O c_sblas3.c c_s3chke.c auxiliary.c c_xerbla.c)
 
@@ -62,11 +60,9 @@
   add_cblas_test(stest1.out ""   xscblat1)
   add_cblas_test(stest2.out sin2 xscblat2)
   add_cblas_test(stest3.out sin3 xscblat3)
- 
 endif()
 
 if(BUILD_DOUBLE)
-
   add_executable(xdcblat1 c_dblat1.f ${DTESTL1O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
   add_executable(xdcblat2 c_dblat2.f ${DTESTL2O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
   add_executable(xdcblat3 c_dblat3.f ${DTESTL3O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
@@ -78,11 +74,9 @@
   add_cblas_test(dtest1.out ""   xdcblat1)
   add_cblas_test(dtest2.out din2 xdcblat2)
   add_cblas_test(dtest3.out din3 xdcblat3)
-
 endif()
 
 if(BUILD_COMPLEX)
-
   add_executable(xccblat1 c_cblat1.f ${CTESTL1O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
   add_executable(xccblat2 c_cblat2.f ${CTESTL2O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
   add_executable(xccblat3 c_cblat3.f ${CTESTL3O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
@@ -94,11 +88,9 @@
   add_cblas_test(ctest1.out ""   xccblat1)
   add_cblas_test(ctest2.out cin2 xccblat2)
   add_cblas_test(ctest3.out cin3 xccblat3)
-
 endif()
 
 if(BUILD_COMPLEX16)
-
   add_executable(xzcblat1 c_zblat1.f ${ZTESTL1O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
   add_executable(xzcblat2 c_zblat2.f ${ZTESTL2O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
   add_executable(xzcblat3 c_zblat3.f ${ZTESTL3O} ${LAPACK_BINARY_DIR}/include/cblas_test.h)
@@ -110,5 +102,4 @@
   add_cblas_test(ztest1.out ""   xzcblat1)
   add_cblas_test(ztest2.out zin2 xzcblat2)
   add_cblas_test(ztest3.out zin3 xzcblat3)
-
 endif()
diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -122,7 +122,33 @@
 # --------------------------------------------------
 # Precision to build
 # By default all precisions are generated
+option(BUILD_SINGLE "Build Single Precision" ON)
+option(BUILD_DOUBLE "Build Double Precision" ON)
+option(BUILD_COMPLEX "Build Complex Precision" ON)
+option(BUILD_COMPLEX16 "Build Double Complex Precision" ON)
+
+set(PRECISIONS)
+if(BUILD_SINGLE)
+  message(STATUS "Building Single Precision")
+  list(APPEND PRECISIONS "single")
+endif()
+if(BUILD_DOUBLE)
+  message(STATUS "Building Double Precision")
+  list(APPEND PRECISIONS "double")
+endif()
+if(BUILD_COMPLEX)
+  message(STATUS "Building Complex Precision")
+  list(APPEND PRECISIONS "complex")
+endif()
+if(BUILD_COMPLEX16)
+  message(STATUS "Building Double Complex Precision")
+  list(APPEND PRECISIONS "complex16")
+endif()
 
+if(NOT PRECISIONS)
+    message(FATAL_ERROR "--> Nothing to build, no precision selected.
+    Please enable at least one of these: BUILD_SINGLE, BUILD_DOUBLE, BUILD_COMPLEX, BUILD_COMPLEX16.")
+endif()
 
 # --------------------------------------------------
 # Subdirectories that need to be processed
@@ -214,10 +240,6 @@
 if(NOT LATESTLAPACK_FOUND)
   message(STATUS "Using supplied NETLIB LAPACK implementation")
   set( LAPACK_LIBRARIES lapack )
-  option(BUILD_SINGLE "Build LAPACK Single Precision" ON)
-  option(BUILD_DOUBLE "Build LAPACK Double Precision" ON)
-  option(BUILD_COMPLEX "Build LAPACK Complex Precision" ON)
-  option(BUILD_COMPLEX16 "Build LAPACK Double Complex Precision" ON)
   add_subdirectory(SRC)
 else()
   set( CMAKE_EXE_LINKER_FLAGS 
diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt
--- a/SRC/CMakeLists.txt
+++ b/SRC/CMakeLists.txt
@@ -1,22 +1,28 @@
 #######################################################################
 #  This is the makefile to create a library for LAPACK.
 #  The files are organized as follows:
-#       ALLAUX -- Auxiliary routines called from all precisions
-#       ALLXAUX -- Auxiliary routines called from all precisions but
-#                  only from routines using extra precision.
-#       SCLAUX -- Auxiliary routines called from both REAL and COMPLEX
-#       DZLAUX -- Auxiliary routines called from both DOUBLE PRECISION
-#                 and COMPLEX*16
-#       SLASRC -- Single precision real LAPACK routines
+#       ALLAUX  -- Auxiliary routines called from all precisions
+#
+#       SCLAUX  -- Auxiliary routines called from both REAL and COMPLEX.
+#       DZLAUX  -- Auxiliary routines called from both DOUBLE and COMPLEX*16.
+#
+#       DSLASRC -- Double-single mixed precision real routines called from
+#                  single, single-extra and double precision real LAPACK
+#                  routines (i.e. from SLASRC, SXLASRC, DLASRC).
+#       ZCLASRC -- Double-single mixed precision complex routines called from
+#                  single, single-extra and double precision complex LAPACK
+#                  routines (i.e. from CLASRC, CXLASRC, ZLASRC).
+#
+#       SLASRC  -- Single precision real LAPACK routines
 #       SXLASRC -- Single precision real LAPACK routines using extra
 #                  precision.
-#       CLASRC -- Single precision complex LAPACK routines
+#       CLASRC  -- Single precision complex LAPACK routines
 #       CXLASRC -- Single precision complex LAPACK routines using extra
 #                  precision.
-#       DLASRC -- Double precision real LAPACK routines
+#       DLASRC  -- Double precision real LAPACK routines
 #       DXLASRC -- Double precision real LAPACK routines using extra
 #                  precision.
-#       ZLASRC -- Double precision complex LAPACK routines
+#       ZLASRC  -- Double precision complex LAPACK routines
 #       ZXLASRC -- Double precision complex LAPACK routines using extra
 #                  precision.
 #
@@ -51,8 +57,6 @@
     ../INSTALL/ilaver.f ../INSTALL/lsame.f xerbla.f xerbla_array.f
     ../INSTALL/slamch.f)
 
-set(ALLXAUX )
-
 set(SCLAUX  
    sbdsdc.f 
    sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f  slaebz.f 
@@ -97,8 +101,8 @@
    sgels.f  sgelsd.f sgelss.f sgelsy.f sgeql2.f sgeqlf.f 
    sgeqp3.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f sgerq2.f sgerqf.f 
    sgesc2.f sgesdd.f sgesv.f  sgesvd.f sgesvdx.f sgesvx.f sgetc2.f sgetf2.f 
-   sgetrf.f sgetrf2.f sgetri.f 
-   sgetrs.f sggbak.f sggbal.f
+   sgetrf2.f sgetri.f 
+   sggbak.f sggbal.f
    sgges.f  sgges3.f sggesx.f sggev.f  sggev3.f sggevx.f
    sggglm.f sgghrd.f sgghd3.f sgglse.f sggqrf.f 
    sggrqf.f sggsvd3.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f  
@@ -123,7 +127,7 @@
    sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f 
    spbstf.f spbsv.f  spbsvx.f 
    spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f  
-   sposvx.f spotf2.f spotrf.f spotrf2.f spotri.f spotrs.f spstrf.f spstf2.f 
+   sposvx.f spotf2.f spotrf2.f spotri.f spstrf.f spstf2.f 
    sppcon.f sppequ.f 
    spprfs.f sppsv.f  sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f 
    spteqr.f sptrfs.f sptsv.f  sptsvx.f spttrs.f sptts2.f srscl.f  
@@ -172,8 +176,8 @@
    cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f cgerq2.f cgerqf.f 
    cgesc2.f cgesdd.f cgesv.f  cgesvd.f cgesvdx.f
    cgesvj.f cgejsv.f cgsvj0.f cgsvj1.f
-   cgesvx.f cgetc2.f cgetf2.f cgetrf.f cgetrf2.f
-   cgetri.f cgetrs.f 
+   cgesvx.f cgetc2.f cgetf2.f cgetrf2.f
+   cgetri.f 
    cggbak.f cggbal.f
    cgges.f  cgges3.f cggesx.f cggev.f  cggev3.f cggevx.f
    cggglm.f cgghrd.f cgghd3.f cgglse.f cggqrf.f cggrqf.f 
@@ -207,7 +211,7 @@
    claswp.f clasyf.f clasyf_rook.f clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f 
    clauu2.f clauum.f cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f  
    cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f 
-   cposv.f  cposvx.f cpotf2.f cpotrf.f cpotrf2.f cpotri.f cpotrs.f cpstrf.f cpstf2.f 
+   cposv.f  cposvx.f cpotf2.f cpotrf2.f cpotri.f cpstrf.f cpstf2.f 
    cppcon.f cppequ.f cpprfs.f cppsv.f  cppsvx.f cpptrf.f cpptri.f cpptrs.f 
    cptcon.f cpteqr.f cptrfs.f cptsv.f  cptsvx.f cpttrf.f cpttrs.f cptts2.f 
    crot.f   cspcon.f cspmv.f  cspr.f   csprfs.f cspsv.f  
@@ -409,52 +413,45 @@
    zla_heamv.f zla_hercond_c.f zla_hercond_x.f zla_herpvgrw.f		
    zla_lin_berr.f zlarscl2.f zlascl2.f zla_wwaddw.f)
 
-
-if( USE_XBLAS)
-  set(ALLXOBJ ${SXLASRC} ${DXLASRC} ${CXLASRC} ${ZXLASRC} ${ALLXAUX})
+if(USE_XBLAS)
+  list(APPEND SLASRC ${SXLASRC})
+  list(APPEND DLASRC ${DXLASRC})
+  list(APPEND CLASRC ${CXLASRC})
+  list(APPEND ZLASRC ${ZXLASRC})
 endif()
 
 if(BUILD_DEPRECATED)
-	LIST(APPEND SLASRC DEPRECATED/sgegs.f DEPRECATED/sgegv.f
+  LIST(APPEND SLASRC DEPRECATED/sgegs.f DEPRECATED/sgegv.f
     DEPRECATED/sgeqpf.f DEPRECATED/sgelsx.f DEPRECATED/sggsvd.f
     DEPRECATED/sggsvp.f DEPRECATED/slahrd.f DEPRECATED/slatzm.f DEPRECATED/stzrqf.f)
-	LIST(APPEND DLASRC DEPRECATED/dgegs.f DEPRECATED/dgegv.f
+  LIST(APPEND DLASRC DEPRECATED/dgegs.f DEPRECATED/dgegv.f
     DEPRECATED/dgeqpf.f DEPRECATED/dgelsx.f DEPRECATED/dggsvd.f
-    DEPRECATED/dggsvp.f DEPRECATED/dlahrd.f DEPRECATED/dlatzm.f DEPRECATED/dtzrqf.f )
+    DEPRECATED/dggsvp.f DEPRECATED/dlahrd.f DEPRECATED/dlatzm.f DEPRECATED/dtzrqf.f)
   LIST(APPEND CLASRC DEPRECATED/cgegs.f DEPRECATED/cgegv.f
     DEPRECATED/cgeqpf.f DEPRECATED/cgelsx.f DEPRECATED/cggsvd.f
     DEPRECATED/cggsvp.f DEPRECATED/clahrd.f DEPRECATED/clatzm.f DEPRECATED/ctzrqf.f)
   LIST(APPEND ZLASRC DEPRECATED/zgegs.f DEPRECATED/zgegv.f
     DEPRECATED/zgeqpf.f DEPRECATED/zgelsx.f DEPRECATED/zggsvd.f
     DEPRECATED/zggsvp.f DEPRECATED/zlahrd.f DEPRECATED/zlatzm.f DEPRECATED/ztzrqf.f)
-	message(STATUS "Building deprecated routines")
+  message(STATUS "Building LAPACK deprecated routines")
 endif()
 
+set(ALLOBJ)
 if(BUILD_SINGLE)
-set(ALLOBJ  ${SLASRC} ${ALLAUX}	${SCLAUX} )
-message(STATUS "Building Single Precision")
+  list(APPEND ALLOBJ ${SLASRC} ${ALLAUX} ${SCLAUX} ${DSLASRC})
 endif()
 if(BUILD_DOUBLE)
-  set(ALLOBJ ${ALLOBJ} ${DLASRC} ${ALLAUX} ${DZLAUX} ${DSLASRC})
-message(STATUS "Building Double Precision")
+  list(APPEND ALLOBJ ${DLASRC} ${ALLAUX} ${DZLAUX} ${DSLASRC})
 endif()
 if(BUILD_COMPLEX)
-  set(ALLOBJ ${ALLOBJ} ${CLASRC} ${ALLAUX} ${SCLAUX} )
-message(STATUS "Building Complex Precision")
+  list(APPEND ALLOBJ ${CLASRC} ${ALLAUX} ${SCLAUX} ${ZCLASRC})
 endif()
 if(BUILD_COMPLEX16)
-  set(ALLOBJ  ${ALLOBJ} ${ZLASRC} ${ALLAUX} ${DZLAUX} ${ZCLASRC})
-message(STATUS "Building Double Complex Precision")
-endif()
-
-if (NOT ALLOBJ)
-    message(FATAL_ERROR "-->LAPACK SRC BUILD: NOTHING TO BUILD, NO PRECISION SELECTED:
-     PLEASE ENABLE AT LEAST ONE OF THOSE: BUILD_SINGLE, BUILD_COMPLEX, BUILD_DOUBLE, BUILD_COMPLEX16.")
+  list(APPEND ALLOBJ ${ZLASRC} ${ALLAUX} ${DZLAUX} ${ZCLASRC})
 endif()
-
 list(REMOVE_DUPLICATES ALLOBJ)
 
-add_library(lapack ${ALLOBJ} ${ALLXOBJ})
+add_library(lapack ${ALLOBJ})
 target_link_libraries(lapack PRIVATE ${BLAS_LIBRARIES} ${XBLAS_LIBRARY})
 set_target_properties(
   lapack PROPERTIES
diff --git a/TESTING/CMakeLists.txt b/TESTING/CMakeLists.txt
--- a/TESTING/CMakeLists.txt
+++ b/TESTING/CMakeLists.txt
@@ -289,7 +289,7 @@
 endif()
 
 
-if (BUILD_SIMPLE)
+if (BUILD_SINGLE)
     if (BUILD_DOUBLE)
 #
 # ======== SINGLE-DOUBLE PROTO LIN TESTS ==============
diff --git a/TESTING/LIN/CMakeLists.txt b/TESTING/LIN/CMakeLists.txt
--- a/TESTING/LIN/CMakeLists.txt
+++ b/TESTING/LIN/CMakeLists.txt
@@ -13,10 +13,10 @@
    schksp.f schksy.f schksy_rook.f schktb.f schktp.f schktr.f 
    schktz.f 
    sdrvgt.f sdrvls.f sdrvpb.f 
-   sdrvpp.f sdrvpt.f sdrvsp.f sdrvsy.f sdrvsy_rook.f
+   sdrvpp.f sdrvpt.f sdrvsp.f sdrvsy_rook.f
    serrgt.f serrlq.f serrls.f 
-   serrpo.f serrps.f serrql.f serrqp.f serrqr.f 
-   serrrq.f serrsy.f serrtr.f serrtz.f serrvx.f 
+   serrps.f serrql.f serrqp.f serrqr.f 
+   serrrq.f serrtr.f serrtz.f 
    sgbt01.f sgbt02.f sgbt05.f sgelqs.f sgeqls.f sgeqrs.f 
    sgerqs.f sget01.f sget02.f 
    sget03.f sget04.f sget06.f sget07.f sgtt01.f sgtt02.f 
@@ -37,9 +37,11 @@
    sqrt04.f sqrt05.f schkqrt.f serrqrt.f schkqrtp.f serrqrtp.f)
 
 if(USEXBLAS)
-  list(APPEND SLINTST sdrvgex.f serrgex.f sdrvgbx.f sdrvpox.f sebchvxx.f)
+  list(APPEND SLINTST serrvxx.f sdrvgex.f sdrvsyx.f serrgex.f sdrvgbx.f sdrvpox.f
+    sebchvxx.f serrsyx.f serrpox.f)
 else()
-  list(APPEND SLINTST sdrvge.f serrge.f sdrvgb.f sdrvpo.f)
+  list(APPEND SLINTST serrvx.f sdrvge.f sdrvsy.f serrge.f sdrvgb.f sdrvpo.f
+    serrsy.f serrpo.f)
 endif()
 
 set(CLINTST  cchkaa.f 
@@ -48,13 +50,12 @@
    cchkpo.f cchkps.f cchkpp.f cchkpt.f cchkq3.f cchkql.f 
    cchkqr.f cchkrq.f cchksp.f cchksy.f cchksy_rook.f cchktb.f 
    cchktp.f cchktr.f cchktz.f 
-   cdrvgt.f cdrvhe.f cdrvhe_rook.f cdrvhp.f 
+   cdrvgt.f cdrvhe_rook.f cdrvhp.f 
    cdrvls.f cdrvpb.f cdrvpp.f cdrvpt.f 
-   cdrvsp.f cdrvsy.f cdrvsy_rook.f
-   cerrgt.f cerrhe.f cerrlq.f 
+   cdrvsp.f cdrvsy_rook.f
+   cerrgt.f cerrlq.f 
    cerrls.f cerrps.f cerrql.f cerrqp.f 
-   cerrqr.f cerrrq.f cerrsy.f cerrtr.f cerrtz.f 
-   cerrvx.f 
+   cerrqr.f cerrrq.f cerrtr.f cerrtz.f 
    cgbt01.f cgbt02.f cgbt05.f cgelqs.f cgeqls.f cgeqrs.f 
    cgerqs.f cget01.f cget02.f 
    cget03.f cget04.f cget07.f cgtt01.f cgtt02.f 
@@ -77,10 +78,11 @@
    cqrt04.f cqrt05.f cchkqrt.f cerrqrt.f cchkqrtp.f cerrqrtp.f )
 
 if(USEXBLAS)
-  list(APPEND 
-    CLINTST cdrvgex.f cdrvgbx.f cerrgex.f cdrvpox.f cerrpox.f cebchvxx.f)
+  list(APPEND CLINTST cerrvxx.f cdrvgex.f cdrvsyx.f cdrvgbx.f cerrgex.f cdrvpox.f
+    cdrvhex.f cerrpox.f cebchvxx.f cerrsyx.f cerrhex.f)
 else()
-  list(APPEND CLINTST cdrvge.f cdrvgb.f cerrge.f cdrvpo.f cerrpo.f)
+  list(APPEND CLINTST cerrvx.f cdrvge.f cdrvsy.f cdrvgb.f cerrge.f cdrvpo.f
+    cdrvhe.f cerrpo.f cerrsy.f cerrhe.f)
 endif()
 
 set(DLINTST  dchkaa.f 
@@ -90,10 +92,10 @@
    dchksp.f dchksy.f dchksy_rook.f dchktb.f dchktp.f dchktr.f 
    dchktz.f 
    ddrvgt.f ddrvls.f ddrvpb.f 
-   ddrvpp.f ddrvpt.f ddrvsp.f ddrvsy.f ddrvsy_rook.f
+   ddrvpp.f ddrvpt.f ddrvsp.f ddrvsy_rook.f
    derrgt.f derrlq.f derrls.f 
    derrps.f derrql.f derrqp.f derrqr.f 
-   derrrq.f derrsy.f derrtr.f derrtz.f derrvx.f 
+   derrrq.f derrtr.f derrtz.f 
    dgbt01.f dgbt02.f dgbt05.f dgelqs.f dgeqls.f dgeqrs.f 
    dgerqs.f dget01.f dget02.f 
    dget03.f dget04.f dget06.f dget07.f dgtt01.f dgtt02.f 
@@ -114,11 +116,11 @@
    dqrt04.f dqrt05.f dchkqrt.f derrqrt.f dchkqrtp.f derrqrtp.f )
 
 if(USEXBLAS)
-  list(APPEND 
-    DLINTST  ddrvgex.f ddrvgbx.f derrgex.f ddrvpox.f derrpox.f debchvxx.f)
+  list(APPEND DLINTST derrvxx.f ddrvgex.f ddrvsyx.f ddrvgbx.f derrgex.f ddrvpox.f derrpox.f
+    debchvxx.f derrsyx.f)
 else()
-  list(APPEND
-    DLINTST  ddrvge.f ddrvgb.f derrge.f ddrvpo.f derrpo.f)
+  list(APPEND DLINTST derrvx.f ddrvge.f ddrvsy.f ddrvgb.f derrge.f ddrvpo.f derrpo.f
+    derrsy.f)
 endif()
 
 set(ZLINTST  zchkaa.f 
@@ -127,17 +129,16 @@
    zchkpo.f zchkps.f zchkpp.f zchkpt.f zchkq3.f zchkql.f 
    zchkqr.f zchkrq.f zchksp.f zchksy.f zchksy_rook.f zchktb.f 
    zchktp.f zchktr.f zchktz.f 
-   zdrvgt.f zdrvhe.f zdrvhe_rook.f zdrvhp.f 
+   zdrvgt.f zdrvhe_rook.f zdrvhp.f 
    zdrvls.f zdrvpb.f zdrvpp.f zdrvpt.f 
-   zdrvsp.f zdrvsy.f zdrvsy_rook.f 
-   zerrgt.f zerrhe.f zerrlq.f 
+   zdrvsp.f zdrvsy_rook.f 
+   zerrgt.f zerrlq.f 
    zerrls.f zerrps.f zerrql.f zerrqp.f 
-   zerrqr.f zerrrq.f zerrsy.f zerrtr.f zerrtz.f 
-   zerrvx.f 
+   zerrqr.f zerrrq.f zerrtr.f zerrtz.f 
    zgbt01.f zgbt02.f zgbt05.f zgelqs.f zgeqls.f zgeqrs.f 
    zgerqs.f zget01.f zget02.f 
    zget03.f zget04.f zget07.f zgtt01.f zgtt02.f 
-   zgtt05.f zhet01.f zhet01.f zhet01_rook.f zhpt01.f zlaipd.f zlaptm.f zlarhs.f zlatb4.f zlatb5.f 
+   zgtt05.f zhet01.f zhet01_rook.f zhpt01.f zlaipd.f zlaptm.f zlarhs.f zlatb4.f zlatb5.f 
    zlatsp.f zlatsy.f zlattb.f zlattp.f zlattr.f 
    zlavhe.f zlavhe_rook.f zlavhp.f zlavsp.f zlavsy.f zlavsy_rook.f zlqt01.f 
    zlqt02.f zlqt03.f zpbt01.f zpbt02.f zpbt05.f 
@@ -156,11 +157,11 @@
    zqrt04.f zqrt05.f zchkqrt.f zerrqrt.f zchkqrtp.f zerrqrtp.f )
 
 if(USEXBLAS)
-  list(APPEND
-    ZLINTST  zdrvgex.f zdrvgbx.f zerrgex.f zdrvpox.f zerrpox.f zebchvxx.f)
+  list(APPEND ZLINTST zerrvxx.f zdrvgex.f zdrvsyx.f zdrvgbx.f zerrgex.f zdrvpox.f zdrvhex.f
+    zerrpox.f zebchvxx.f zerrsyx.f zerrhex.f)
 else()
-  list(APPEND
-    ZLINTST  zdrvge.f zdrvgb.f zerrge.f zdrvpo.f zerrpo.f)
+  list(APPEND ZLINTST zerrvx.f zdrvge.f zdrvsy.f zdrvgb.f zerrge.f zdrvpo.f zdrvhe.f
+    zerrpo.f zerrsy.f zerrhe.f)
 endif()
 
 set(DSLINTST  dchkab.f 
@@ -197,29 +198,29 @@
 endmacro(add_lin_executable)
 
 IF(BUILD_SINGLE)
-add_lin_executable(xlintsts ${ALINTST} ${SCLNTST} ${SLINTST} ${SECOND_SRC} )
+add_lin_executable(xlintsts ${ALINTST} ${SLINTST} ${SCLNTST} ${SECOND_SRC})
 add_lin_executable(xlintstrfs ${SLINTSTRFP} ${SECOND_SRC})
 endif()
 
 if(BUILD_DOUBLE)
-add_lin_executable(xlintstd  ${ALINTST} ${DLINTST} ${DZLNTST} ${DSECOND_SRC})
+add_lin_executable(xlintstd ${ALINTST} ${DLINTST} ${DZLNTST} ${DSECOND_SRC})
 add_lin_executable(xlintstrfd ${DLINTSTRFP} ${DSECOND_SRC})
 endif()
 
 IF(BUILD_SINGLE AND BUILD_DOUBLE)
-add_lin_executable(xlintstds ${DSLINTST} ${SECOND_SRC} ${DSECOND_SRC} )
+add_lin_executable(xlintstds ${DSLINTST} ${SECOND_SRC} ${DSECOND_SRC})
 endif()
 
 if(BUILD_COMPLEX)
-add_lin_executable(xlintstc  ${ALINTST} ${CLINTST} ${SCLNTST} ${SECOND_SRC} )
-add_lin_executable(xlintstrfc  ${CLINTSTRFP} ${SECOND_SRC})
+add_lin_executable(xlintstc ${ALINTST} ${CLINTST} ${SCLNTST} ${SECOND_SRC})
+add_lin_executable(xlintstrfc ${CLINTSTRFP} ${SECOND_SRC})
 endif()
 
 if(BUILD_COMPLEX16)
-add_lin_executable(xlintstz  ${ALINTST} ${ZLINTST} ${DZLNTST} ${DSECOND_SRC})
+add_lin_executable(xlintstz ${ALINTST} ${ZLINTST} ${DZLNTST} ${DSECOND_SRC})
 add_lin_executable(xlintstrfz ${ZLINTSTRFP} ${DSECOND_SRC})
 endif()
 
 IF(BUILD_COMPLEX AND BUILD_COMPLEX16)
-add_lin_executable(xlintstzc ${ZCLINTST} ${SECOND_SRC} ${DSECOND_SRC} )
+add_lin_executable(xlintstzc ${ZCLINTST} ${SECOND_SRC} ${DSECOND_SRC})
 endif()
diff --git a/TESTING/MATGEN/CMakeLists.txt b/TESTING/MATGEN/CMakeLists.txt
--- a/TESTING/MATGEN/CMakeLists.txt
+++ b/TESTING/MATGEN/CMakeLists.txt
@@ -31,45 +31,41 @@
 #
 #######################################################################
  
-set(SCATGEN  slatm1.f slaran.f slarnd.f)
+set(SCATGEN  slatm1.f slatm7.f slaran.f slarnd.f)
 
 set(SMATGEN  slatms.f slatme.f slatmr.f slatmt.f 
    slagge.f slagsy.f slakf2.f slarge.f slaror.f slarot.f slatm2.f 
-   slatm3.f slatm5.f slatm6.f slatm7.f slahilb.f)
+   slatm3.f slatm5.f slatm6.f slahilb.f)
 
 set(CMATGEN  clatms.f clatme.f clatmr.f clatmt.f 
    clagge.f claghe.f clagsy.f clakf2.f clarge.f claror.f clarot.f 
-   clatm1.f clarnd.f clatm2.f clatm3.f clatm5.f clatm6.f clahilb.f slatm7.f)
+   clatm1.f clarnd.f clatm2.f clatm3.f clatm5.f clatm6.f clahilb.f)
 
-set(DZATGEN  dlatm1.f dlaran.f dlarnd.f)
+set(DZATGEN  dlatm1.f dlatm7.f dlaran.f dlarnd.f)
 
 set(DMATGEN  dlatms.f dlatme.f dlatmr.f dlatmt.f 
    dlagge.f dlagsy.f dlakf2.f dlarge.f dlaror.f dlarot.f dlatm2.f 
-   dlatm3.f dlatm5.f dlatm6.f dlatm7.f dlahilb.f)
+   dlatm3.f dlatm5.f dlatm6.f dlahilb.f)
 
 set(ZMATGEN  zlatms.f zlatme.f zlatmr.f zlatmt.f 
-  zlagge.f zlaghe.f zlagsy.f zlakf2.f zlarge.f zlaror.f zlarot.f 
-  zlatm1.f zlarnd.f zlatm2.f zlatm3.f zlatm5.f zlatm6.f zlahilb.f dlatm7.f)
+   zlagge.f zlaghe.f zlagsy.f zlakf2.f zlarge.f zlaror.f zlarot.f 
+   zlatm1.f zlarnd.f zlatm2.f zlatm3.f zlatm5.f zlatm6.f zlahilb.f)
 
+set(ALLOBJ)
 if(BUILD_SINGLE)
-  set(ALLOBJ ${SMATGEN} ${SCATGEN})
+  list(APPEND ALLOBJ ${SMATGEN} ${SCATGEN})
 endif()
 if(BUILD_DOUBLE)
-  set(ALLOBJ ${ALLOBJ} ${DMATGEN} ${DZATGEN})
+  list(APPEND ALLOBJ ${DMATGEN} ${DZATGEN})
 endif()
 if(BUILD_COMPLEX)
-  set(ALLOBJ  ${ALLOBJ} ${CMATGEN} ${SCATGEN})
+  list(APPEND ALLOBJ ${CMATGEN} ${SCATGEN})
 endif()
 if(BUILD_COMPLEX16)
-  set(ALLOBJ ${ALLOBJ} ${ZMATGEN} ${DZATGEN})
+  LIST(APPEND ALLOBJ ${ZMATGEN} ${DZATGEN})
 endif()
+list(REMOVE_DUPLICATES ALLOBJ)
 
-if (NOT ALLOBJ)
-set(ALLOBJ ${SMATGEN} ${CMATGEN} ${SCATGEN} ${DMATGEN} ${ZMATGEN}
-  ${DZATGEN})
-else()
-  list(REMOVE_DUPLICATES ALLOBJ)
-endif()
-add_library(tmglib ${ALLOBJ} )
+add_library(tmglib ${ALLOBJ})
 target_link_libraries(tmglib ${LAPACK_LIBRARIES})
 lapack_install_library(tmglib)
diff --git a/TESTING/MATGEN/Makefile b/TESTING/MATGEN/Makefile
--- a/TESTING/MATGEN/Makefile
+++ b/TESTING/MATGEN/Makefile
@@ -33,21 +33,21 @@
 #
 #######################################################################
  
-SCATGEN = slatm1.o slaran.o slarnd.o
+SCATGEN = slatm1.o slatm7.o slaran.o slarnd.o
 
 SMATGEN = slatms.o slatme.o slatmr.o slatmt.o \
    slagge.o slagsy.o slakf2.o slarge.o slaror.o slarot.o slatm2.o \
-   slatm3.o slatm5.o slatm6.o slatm7.o slahilb.o
+   slatm3.o slatm5.o slatm6.o slahilb.o
 
 CMATGEN = clatms.o clatme.o clatmr.o clatmt.o \
    clagge.o claghe.o clagsy.o clakf2.o clarge.o claror.o clarot.o \
    clatm1.o clarnd.o clatm2.o clatm3.o clatm5.o clatm6.o clahilb.o
 
-DZATGEN = dlatm1.o dlaran.o dlarnd.o
+DZATGEN = dlatm1.o dlatm7.o dlaran.o dlarnd.o
 
 DMATGEN = dlatms.o dlatme.o dlatmr.o dlatmt.o \
    dlagge.o dlagsy.o dlakf2.o dlarge.o dlaror.o dlarot.o dlatm2.o \
-   dlatm3.o dlatm5.o dlatm6.o dlatm7.o dlahilb.o
+   dlatm3.o dlatm5.o dlatm6.o dlahilb.o
 
 ZMATGEN = zlatms.o zlatme.o zlatmr.o zlatmt.o \
    zlagge.o zlaghe.o zlagsy.o zlakf2.o zlarge.o zlaror.o zlarot.o \
